import { Controller, Get, Post, Body, Patch, Param, Delete, Query } from '@nestjs/common';
import { DictDataService } from './dict-data.service';
import { CreateDictDataDto } from './dto/create-dict-data.dto';
import { DictData } from 'src/database/entitys/dict-data.entity';
import R from 'src/common/dto/R.dto';

/**
 * 字典数据控制器
 * @description 提供字典数据的CRUD接口，包括查询、创建、更新和删除操作
 */
@Controller('system/dict-data')
export class DictDataController {
  constructor(private readonly dictDataService: DictDataService) {}

  /**
   * 查询字典数据列表
   * @param dicDto 查询条件对象，包含dictId等参数
   * @returns 返回查询结果列表和统一响应格式
   * @description 根据字典类型ID查询对应的字典数据列表
   */
  @Get()
  async findAll(@Query() dicDto: Partial<DictData>) {
    return R.success(await this.dictDataService.findAll(dicDto), '查询成功');
  }

  /**
   * 新增字典数据
   * @param createDictDataDto 创建字典数据的DTO对象
   * @returns 返回创建结果和统一响应格式
   * @description 创建新的字典数据项
   */
  @Post()
  async create(@Body() createDictDataDto: CreateDictDataDto) {
    return R.success(await this.dictDataService.create(createDictDataDto), '创建成功');
  }

  /**
   * 更新字典数据
   * @param dictDataId 字典数据ID
   * @param updateDictDataDto 更新的字典数据对象
   * @returns 返回更新结果和统一响应格式
   * @description 更新指定ID的字典数据信息
   */
  @Patch(':dictDataId')
  async update(@Param('dictDataId') dictDataId: number, @Body() updateDictDataDto: Partial<DictData>) {
    return R.success(await this.dictDataService.update(dictDataId, updateDictDataDto), '更新成功');
  }

  /**
   * 删除字典数据
   * @param dictDataId 字典数据ID
   * @returns 返回删除结果和统一响应格式
   * @description 删除指定ID的字典数据
   */
  @Delete(':dictDataId')
  async remove(@Param('dictDataId') dictDataId: number) {
    await this.dictDataService.remove(dictDataId);
    return R.success(null, '删除成功');
  }
}
